সি প্রোগ্রামিং ফাংশন ডিফাইন্ড করার অনুমতি দেয়। এই অধ্যায়ে আপনি সি প্রোগ্রামিং এ ইউজার ডিফাইন্ড(user defined) ফাংশন তৈরি করা শিখবেন।
ফাংশন হলো ব্লক অব কোড(block of code) যা কোনো নির্দিষ্ট কার্য সম্পাদন করে।
সি প্রোগ্রামিং আপনার প্রয়োজন অনুসারে ফাংশন ডিফাইন্ড করার অনুমতি দিয়ে থাকে। এই ফাংশনসমূহ ইউজার ডিফাইন্ড ফাংশন নামে পরিচিত। উদাহরনস্বরুপঃ
ধরুন, একটি গ্রাফিক্স প্রোগ্রাম তৈরি করতে একটি বর্গ, একটি বৃত্ত এবং কালারের প্রয়োজন যা ইউজার কর্তৃক যথাক্রমে দৈর্ঘ্য, ব্যাসার্ধ এবং কালারের উপর নির্ভর করে। এই সমস্যা সমাধান করতে আপনি তিনটি ফাংশন ব্যবহার করতে পারেন।
- বর্গ ফাংশন
- বৃত্ত ফাংশন
- কালার ফাংশন
নিচের উদাহরণে দুটি ইন্টেজার নাম্বারের গুণের প্রোগ্রাম দেখানো হলো। এই কাজ সম্পাদনের জন্য একটি ইউজার ডিফাইন্ড ফাংশন multiplyNumbers()
ডিফাইন্ড করা হয়েছে।
kt_satt_skill_example_id=313
ফাংশন প্রোটোটাইপ দ্বারা সাধারণত ফাংশনের ডিক্লেয়ারেশনকে বুঝায় যাতে ফাংশনের নাম, প্যারামিটার এবং রিটার্ন টাইপ নির্ধারণ করা থাকে। এতে ফাংশনের বডি(body) অর্থাৎ ফাংশন ডেফিনিশন থাকে না।
ফাংশন প্রোটোটাইপ কম্পাইলারকে আগাম বার্তা দেয় যে, প্রোগ্রামে এই ফাংশনটি পরে কখনো ব্যবহার করা হতে পারে।
returnType functionName(type1 argument1, type2 argument2,...);
উপরের প্রোগ্রামে int multiplyNumbers(int a, int b);
হলো ফাংশন প্রোটোটাইপ যা কম্পাইলারকে নিম্নোক্ত তথ্যসমূহ দিয়ে থাকেঃ
multiplyNumbers() হলো ফাংশনের নাম
int হলো ফাংশনের রিটার্ন টাইপ
int টাইপের দুটি আর্গুমেন্ট ফাংশনের মধ্য দিয়ে অতিক্রম করবে।
ইউজার ডিফাইন্ড ফাংশন
main()
এর পূর্বে ডিফাইন্ড করা হলে ফাংশন প্রোটোটাইপের প্রয়োজন হয় না।
কল করার মাধ্যমে প্রোগ্রামের নিয়ন্ত্রণ ইউজার ডিফাইন্ড ফাংশনের কাছে স্থানান্তরিত হয়।
functionName(argument1, argument2, ...);
উপরের উদাহরণে main()
ফাংশনের মধ্য থেকে multiplyNumbers(n1,n2);
স্টেটমেন্ট ব্যবহার করে ফাংশনকে কল করা হয়েছে।
নির্দিষ্ট কার্য সম্পাদনের জন্য ফাংশন ডেফিনিশন কিছু কোডের ব্লক নিয়ে গঠিত হয়। যেমন- উপরের উদাহরণে ফাংশনের রিটার্ন টাইপ এবং ফাংশন ডেফিনিশনের মধ্যে দুটি সংখ্যা গুণ করার জন্য কিছু কোড ব্যবহার করা হয়েছে।
returnType functionName(type1 argument1, type2 argument2, ...)
{
//ফাংশনের বডি(body)
}
ফাংশনকে যখন কল করা হয় তখন প্রোগ্রামের নিয়ন্ত্রণ ফাংশন ডেফিনিশনে স্তানান্তরিত হয়। কম্পাইলার ফাংশন বডির মধ্যে অবস্থিত কোডসমূহ এক্সিকিউশন করা শুরু করে।
প্রোগ্রামিং এ আর্গুমেন্ট দ্বারা ভ্যারিয়েবলকে বুঝায় যা ফাংশনের মধ্য দিয়ে অতিক্রম করে। উপরের উদাহরণে ফাংশন কলের সময় num1 এবং num2 ভ্যারিয়েবল দুটি ফাংশনের মধ্য অতিক্রম করে।
ফাংশন ডেফিনিশনের প্যারামিটার a এবং b অতিক্রান্ত আর্গুমেন্ট দুটি গ্রহণ করে। এই আর্গুমেন্ট সমূহকে ফাংশনের ফরমাল(formal) প্যারামিটার বলা হয়।
ফাংশনের মধ্য দিয়ে অতিক্রান্ত আর্গুমেন্ট এবং ফরমাল প্যারামিটারকে অবশ্যই এক হতে হবে নতুবা কম্পাইলার এরর(error) নিক্ষেপ করবে।
যদি num1 ইন্টেজার টাইপের হয় তাহলে a কে অবশ্যই ইন্টেজার টাইপের হতে হবে। যদি num2 ডাবল টাইপের হয় তাহলে b ভ্যারিয়েবলকে অবশ্যই double টাইপের হতে হবে।
ফাংশনের মধ্য দিয়ে আর্গুমেন্ট অতিক্রম করানো ছাড়াও ফাংশনকে কল করা যায়।
return স্টেটমেন্ট ফাংশন এক্সিকিউশের সমাপ্তি ঘটায় এবং কল করা ফাংশনের কাছে ভ্যালু ফেরত পাঠায়। রিটার্ন স্টেটমেন্টের পরে প্রোগ্রামের কন্ট্রোল কলিং(calling) ফাংশনের কাছে স্থানান্তরিত হয়
উপরের উদাহরণে result ভ্যারিয়েবলের ভ্যালু main()
ফাংশনের multiplication ভ্যারিয়েবলের এর কাছে ফেরত পাঠায়।
return (expression);
return sum;
return (x+y);
ফাংশন থেকে রিটার্নকৃত ভ্যালুর টাইপ এবং ফাংশন প্রোটোটাইপ ও ফাংশন ডেফিনিশনের রিটার্ন টাইপ অবশ্যই একই হতে হবে।
common.read_more